package com.atguigu.dao;

import com.atguigu.base.BaseDAO;
import com.atguigu.entity.Permission;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * @PACKAGE_NAME: com.atguigu.dao
 * @CLASSNAME: PermissionDAO
 * @AUTHOR: zhangsan
 * @DATE: 2024/5/1 20:57
 * @SINCE 17.0.7
 * @DESCRIPTION: PermissionDAO
 */
public interface PermissionDAO extends BaseDAO<Permission> {
    /**
     * 查找出所有权限
     * @return
     */
    List<Permission> findAll();

    /**
     * 判单该节点是不是父节点
     * 是父节点 则 open:true,不是则open:false
     * @param id
     * @return
     */
    Integer isParent(Long id);

    List<Permission> getListByParentId(Long parentId);

    Integer updateIsDeleted(@Param("id") Long id,
                            @Param("isDeleted") Integer isDeleted);

    /**
     * 根据用户id找到该用户分配的角色,根据角色找到该角色分配的权限
     * @param adminId
     * @return
     */
    List<Permission> findPermissionListByAdminId(@Param("adminId") Long adminId,
                                                 @Param("type") Integer type);

    /**
     * 找到所有菜单权限
     * type =1 表示菜单权限,type=2 表示按钮权限
     * @return
     */
    List<Permission> findAllMenu();

    /**
     * 通过name
     * @return
     */
    Permission selectByTypeNameUrlCode(Permission permission);

    /**
     * 查找所有的权限对应的权限编码
     * @return
     */
    List<String> findAllCodeList();

    /**
     * 通过adminId查找该用户拥有的权限,对应的权限编码
     * @param adminId
     * @return
     */
    List<String> findCodeListByAdminId(@Param("adminId") Long adminId);
}
